package com.cloud.pole.weixin.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.druid.support.json.JSONUtils;
import com.cloud.pole.weixin.biz.WxMenuBiz;
import com.cloud.pole.weixin.model.entity.WxMenu;
import com.cloud.pole.weixin.service.WxMenuService;
import lombok.extern.slf4j.Slf4j;

/*
*2019年5月13日
*cloud-weixin
*author:frank-chen
*/
@Slf4j
@Service
public class WxMenuServiceImpl implements WxMenuService {
	
	@Autowired
	private WxMenuBiz wxMenuBiz;
	
	@Override
	public String getWxMenu(Integer wxAppId) throws Exception {
		// TODO Auto-generated method stub
		//获取一级菜单
		List<WxMenu> rootList =  wxMenuBiz.selectWxMenuList(wxAppId, 0);
		Map<String, Object> resultMap = new HashMap<String, Object>();
		List<Map<String, Object>> buttonMap = new ArrayList<Map<String, Object>>();
		for(WxMenu wxMenu : rootList) {
			//有子菜单
			if(StringUtils.isEmpty(wxMenu.getMenuType())) {
				Map<String, Object> rootMap = new HashMap<String, Object>();
				rootMap.put("name", wxMenu.getMenuName());
				List<Object> subButtonList = new ArrayList<Object>();
				List<WxMenu> sonList =  wxMenuBiz.selectWxMenuList(wxAppId, wxMenu.getMenuId());
				for(WxMenu sonWxMenu : sonList) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("name", sonWxMenu.getMenuName());
					map.put("type", sonWxMenu.getMenuType());
					//按钮
					if(!StringUtils.isEmpty(sonWxMenu.getMenuKey())){
						map.put("key", sonWxMenu.getMenuKey());
					}
					//链接
					if(!StringUtils.isEmpty(sonWxMenu.getMenuUrl())){
						map.put("url", sonWxMenu.getMenuUrl());
					}
					//小程序
					if(!StringUtils.isEmpty(sonWxMenu.getMinProgramAppId())){
						map.put("appId", sonWxMenu.getMinProgramAppId());
					}
					if(!StringUtils.isEmpty(sonWxMenu.getMinProgramPagePath())){
						map.put("pagepath", sonWxMenu.getMinProgramPagePath());
					}
					subButtonList.add(map);
				}
				rootMap.put("sub_button", subButtonList);
				buttonMap.add(rootMap);
			}
			else {
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("name", wxMenu.getMenuName());
				map.put("type", wxMenu.getMenuType());
				//按钮
				if(!StringUtils.isEmpty(wxMenu.getMenuKey())){
					map.put("key", wxMenu.getMenuKey());
				}
				//链接
				if(!StringUtils.isEmpty(wxMenu.getMenuUrl())){
					map.put("url", wxMenu.getMenuUrl());
				}
				//小程序
				if(!StringUtils.isEmpty(wxMenu.getMinProgramAppId())){
					map.put("appId", wxMenu.getMinProgramAppId());
				}
				if(!StringUtils.isEmpty(wxMenu.getMinProgramPagePath())){
					map.put("pagepath", wxMenu.getMinProgramPagePath());
				}
				buttonMap.add(map);
			}
		}
		resultMap.put("button", buttonMap);
		return JSONUtils.toJSONString(resultMap);
	}
}
